package ink.ykb.demo.permission.service;

import java.util.List;

import ink.ykb.demo.permission.entity.Role;
import ink.ykb.demo.permission.entity.Rule;
import ink.ykb.demo.permission.entity.UserRole;

public interface UserRoleService {

  /**
   * 添加用户角色关联配置
   * @param userRole
   */
  void add(UserRole userRole);
  
  /**
   * 批量添加用户角色
   * @param userId
   * @param roleIds id集合，逗号分隔
   */
  void addBatchUserRole(Long userId,String roleIds);
  
  /**
   * 删除用户角色关联配置
   * @param userRoleId 关联表主键
   */
  void delete(Long userRoleId);
  
  /**
   * 删除用户角色关联配置
   * @param userId 用户主键
   * @param roleId 角色主键
   */
  void deleteByUserIdAndRoleId(Long userId,Long roleId);
  
  /**
   * 查询用户的所有角色关联配置列表
   * @param userId 用户主键
   * @return
   */
  List<UserRole> getUserRoleListByUserId(Long userId);
  
  /**
   * 查询用户的所有角色关联配置列表
   * @param roleId 角色主键
   * @return
   */
  List<UserRole> getUserRoleListByRoleId(Long roleId);
  
  /**
   * 获取用户角色关联配置信息
   * @param userRoleId
   * @return
   */
  UserRole getUserRole(Long userRoleId);
  
  /**
   * 根据用户ID和角色ID获取关联角色配置
   * @param userId
   * @param roleId
   * @return
   */
  UserRole getUserRole(Long userId, Long roleId);
  
  /**
   * 批量删除用户角色
   * @param userId
   * @param roleIds id集合，逗号分隔
   */
  void deleteBatchUserRole(Long userId,String roleIds);
  
  /**
   * 批量更新用户角色
   * @param userId
   * @param roleIds
   */
  void updateBatchUserRole(Long userId,String roleIds);
  
  /**
   * 查询用户所有角色
   * @param userId
   */
  List<Role> getUserRoleList(Long userId);
  
  /**
   * 查询用户所有权限
   * @param userId
   * @return
   */
  List<Rule> getUserRuleList(Long userId);
  /**
   * 根据类型查询用户所有权限
   * @param type
   * @param userId
   * @return
   */
  List<Rule> getUserRuleList(Long userId,Integer type);
}
